package com.example.leetcode;

/**
 * 动态规划 ** 参考题解 ** 难点
 * 乘积最大子数组
 */
public class Demo0152 {
    public int maxProduct(int[] nums) {
        int len = nums.length;
        if (len==1){
            return nums[0];
        }
        int max=nums[0];
        int maxFun[]=new int[len];
        int minFun[]=new int[len];
        maxFun[0]=nums[0];
        minFun[0]=nums[0];
        for (int i = 1; i < len; i++) {
            maxFun[i]=Math.max(Math.max(minFun[i-1]*nums[i],nums[i]),maxFun[i-1]*nums[i]);
            minFun[i]=Math.min(Math.min(maxFun[i-1]*nums[i],nums[i]),minFun[i-1]*nums[i]);
            max=Math.max(maxFun[i],max);
        }
        return max;
    }
}
